]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
extensions-tool: Add common option to silence errors
authorFlorian Müllner <fmuellner@gnome.org>
Sat, 14 Mar 2020 11:58:04 +0000 (12:58 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Sun, 5 Apr 2020 11:42:50 +0000 (13:42 +0200)
Error reporting is useful when used interactively, but often undesirable
when used in scripts. Account for that with a common --quiet option,
which is more convenient than redirection stderr to /dev/null.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2391

13 files changed:
subprojects/extensions-tool/man/gnome-extensions.txt
subprojects/extensions-tool/src/command-create.c
subprojects/extensions-tool/src/command-disable.c
subprojects/extensions-tool/src/command-enable.c
subprojects/extensions-tool/src/command-info.c
subprojects/extensions-tool/src/command-install.c
subprojects/extensions-tool/src/command-list.c
subprojects/extensions-tool/src/command-pack.c
subprojects/extensions-tool/src/command-prefs.c
subprojects/extensions-tool/src/command-reset.c
subprojects/extensions-tool/src/command-uninstall.c
subprojects/extensions-tool/src/common.h
subprojects/extensions-tool/src/main.c

index 125c9b82ce7a8cca880e06e2ba94cccba95b029c..d94c0bd2e3d50979edc8800edddbb73392c92ebb 100644 (file)
@@ -42,6 +42,13 @@ DESCRIPTION
 *gnome-extensions* is a utility that makes some common GNOME extensions
 operations available on the command line.
 
+COMMON OPTIONS
+--------------
+All commands except for *help* and *version* handle the following options:
+
+*--quiet*, *-q*::
+Do not print error messages
+
 COMMANDS
 --------
 *help* ['COMMAND']::
index e32e7c262b2f51730227632ea1dd0861e54c81e7..7fb5d7a78f36ee825aee537de2f16f4e4f732fcd 100644 (file)
@@ -262,6 +262,7 @@ handle_create (int argc, char *argv[], gboolean do_help)
   g_option_context_set_help_enabled (context, FALSE);
   g_option_context_set_summary (context, _("Create a new extension"));
   g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+  g_option_context_add_group (context, get_option_group ());
 
   if (do_help)
     {
index aa8efab5bc35e370ce7b300653f6d0c589b29408..116f6699cb30f058c2ee29eb8afa137ffa9e3d05 100644 (file)
@@ -56,6 +56,7 @@ handle_disable (int argc, char *argv[], gboolean do_help)
   g_option_context_set_help_enabled (context, FALSE);
   g_option_context_set_summary (context, _("Disable an extension"));
   g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+  g_option_context_add_group (context, get_option_group());
 
   if (do_help)
     {
index c790ec95f357c2d9189959e22bebebe70a1c0bc8..786e4510956ec90df173b693b6bed5ca96ec57fd 100644 (file)
@@ -56,6 +56,7 @@ handle_enable (int argc, char *argv[], gboolean do_help)
   g_option_context_set_help_enabled (context, FALSE);
   g_option_context_set_summary (context, _("Enable an extension"));
   g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+  g_option_context_add_group (context, get_option_group());
 
   if (do_help)
     {
index a0ae0c6ac87feb9de76789c0a2f3c285f09d675e..e280023e1ce6b783019fd6c27dc06b5b50e795f5 100644 (file)
@@ -78,6 +78,7 @@ handle_info (int argc, char *argv[], gboolean do_help)
   g_option_context_set_help_enabled (context, FALSE);
   g_option_context_set_summary (context, _("Show extensions info"));
   g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+  g_option_context_add_group (context, get_option_group());
 
   if (do_help)
     {
index 501f9502c812772b1a23a64c6a761491b74077b5..2eefabafa3fbbe1926cea8f6f8cfbad9c8c2a537 100644 (file)
@@ -183,6 +183,7 @@ handle_install (int argc, char *argv[], gboolean do_help)
   g_option_context_set_help_enabled (context, FALSE);
   g_option_context_set_summary (context, _("Install an extension bundle"));
   g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+  g_option_context_add_group (context, get_option_group());
 
   if (do_help)
     {
index f92dafa4eebdc2a37e37341ef85680de3b2cbea3..bc021fd14ef5fc924250916a4c1bc998421a5880 100644 (file)
@@ -150,6 +150,7 @@ handle_list (int argc, char *argv[], gboolean do_help)
   g_option_context_set_help_enabled (context, FALSE);
   g_option_context_set_summary (context, _("List installed extensions"));
   g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+  g_option_context_add_group (context, get_option_group());
 
   if (do_help)
     {
index d98e8fa4fbc19026241b04866feb2dad63727913..c8d99500655c82e09c179eb84546733a39bb6e06 100644 (file)
@@ -480,6 +480,7 @@ handle_pack (int argc, char *argv[], gboolean do_help)
   g_option_context_set_help_enabled (context, FALSE);
   g_option_context_set_summary (context, _("Create an extension bundle"));
   g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+  g_option_context_add_group (context, get_option_group());
 
   if (do_help)
     {
index 693d48406a9a3be07f83cdbdadb360840c3b6268..86799eafc582b679045f7d0a47110c222fc519eb 100644 (file)
@@ -89,6 +89,7 @@ handle_prefs (int argc, char *argv[], gboolean do_help)
   g_option_context_set_help_enabled (context, FALSE);
   g_option_context_set_summary (context, _("Opens extension preferences"));
   g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+  g_option_context_add_group (context, get_option_group());
 
   if (do_help)
     {
index 32b5fbaf24e497444be269abb9fc9147b77bfbc9..2615f1595c26ab5911f02c770ee081ee96f782e7 100644 (file)
@@ -1,4 +1,5 @@
 /* command-reset.c
+  g_option_context_add_group (context, get_option_group());
  *
  * Copyright 2019 Florian Müllner <fmuellner@gnome.org>
  *
@@ -56,6 +57,7 @@ handle_reset (int argc, char *argv[], gboolean do_help)
   g_option_context_set_help_enabled (context, FALSE);
   g_option_context_set_summary (context, _("Reset an extension"));
   g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+  g_option_context_add_group (context, get_option_group());
 
   if (do_help)
     {
index 757de6d1b93ca5d9ff7ae5227b26486ea2ef85ea..5974e098e1dc333da99bff6d05342de33a1264a5 100644 (file)
@@ -71,6 +71,7 @@ handle_uninstall (int argc, char *argv[], gboolean do_help)
   g_option_context_set_help_enabled (context, FALSE);
   g_option_context_set_summary (context, _("Uninstall an extension"));
   g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+  g_option_context_add_group (context, get_option_group());
 
   if (do_help)
     {
index 32f4b788b8ce5c293201b39a0537a53b8499298f..fb23b658043f7fc3faccca1de82ec2da5358150e 100644 (file)
@@ -45,6 +45,8 @@ typedef enum {
   DISPLAY_DETAILED
 } DisplayFormat;
 
+GOptionGroup *get_option_group (void);
+
 void show_help (GOptionContext *context,
                 const char     *message);
 
index 62d383db7dcea6555dfa70971dc6cf9a0955bd12..cc7cd80cd6ac18c6b8389b52326f71f832b2efec 100644 (file)
@@ -49,6 +49,39 @@ extension_state_to_string (ExtensionState state)
   return "UNKNOWN";
 }
 
+static void
+print_nothing (const char *message)
+{
+}
+
+static gboolean
+quiet_cb (const gchar  *option_name,
+          const gchar  *value,
+          gpointer      data,
+          GError      **error)
+{
+  g_set_printerr_handler (print_nothing);
+  return TRUE;
+}
+
+GOptionGroup *
+get_option_group ()
+{
+  GOptionEntry entries[] = {
+    { .long_name = "quiet", .short_name = 'q',
+      .description = _("Do not print error messages"),
+      .arg = G_OPTION_ARG_CALLBACK, .arg_data = &quiet_cb,
+      .flags = G_OPTION_FLAG_NO_ARG | G_OPTION_FLAG_IN_MAIN },
+    { NULL }
+  };
+  GOptionGroup *group;
+
+  group = g_option_group_new ("Common", "common options", "common options", NULL, NULL);
+  g_option_group_add_entries (group, entries);
+
+  return group;
+}
+
 void
 show_help (GOptionContext *context, const char *message)
 {